<?php 
namespace Admin\Controller;

class AuserController extends AdminController{

    private $Auser = null; //数据库操作类
    private $Role = null; //数据库操作类
    private $User_role = null; //数据库操作类
    


    //初始化操作
    public function _initialize(){
        parent::_initialize();
        $this->Auser = D('auser');
        $this->Role  = D('role');
        $this->User_role  = D('user_role');
    }


    //后台用户列表
    public function index()
    {
        // dump($_SESSION);
        // exit;
        $admin_user = M('auser')->select();
        // dump($admin_user);
        // exit;
        $arr = array(); //声明一个空数组
            //遍历用户信息
        foreach($admin_user as $v){
            $role_ids = $this->User_role->field('r_id')->where(array('u_id'=>array('eq',$v['id'])))->select();
            //定义空数组
            $roles = array();
            // dump($role_ids);
            //遍历
            foreach($role_ids as $value){
                $roles[] = $this->Role->where(array('id'=>array('eq',$value['r_id']),'type'=>array('eq',1)))->getField('rname');
                }
            $v['role'] = $roles; //将新得到角色信息放置到$v中
            $arr[] = $v;
            }




        $this->assign('admin_list',$arr);
        $this->display();

    }

    //后台用户添加
    public function admin_add()
    {
        $this->display('Auser/add');
    }

    //后台用户添加处理
    // public function admin_addo()
    // {

    //     // dump($_POST);
    //     // 过滤数据
    //   if (IS_POST) {
    //     if (empty($_POST)) {
    //         $this->error('不能什么都不填哟!!');
    //     }

    //         if ($_POST['name']==null || $_POST['pwd']==null || $_POST['tel']==null || $_POST['sex']==null || $_POST['email'] == null) {
    //             $this->error('您是不是少填什么辣!!');
    //             exit;
    //         }
    //         $User = D('user');
    //         $p_name=$_POST['name'];
    //         $list['id']=$_POST['id'];
    //         $list['name']=$_POST['name'];
    //         $list['pwd']=$_POST['pwd'];
    //         $list['tel']=$_POST['tel'];
    //         $list['sex']=$_POST['sex'];
    //         $list['email']=$_POST['email'];
    //         // var_dump($User->create());exit;

    //         $User->create();
    //         // 验证通过
    //         // var_dump($list);exit;
    //         $m = M('admin_user')->where(array('name'=>$p_name))->select();
    //         if ($_POST['name'] == $m[0]['name']) {
    //                 $this->error('用户名已存在');
    //             }

    //         // dump($m);
            
    //         if (M('admin_user')->add($list) > 0) {
                
    //             $this->success('添加成功',U('User/admin_user'));
    //         } else {
    //             $this->error('添加失败');
    //         }
    //   }else{
    //     $this->error('请求失败!!');
    //   }
    // }

    public function admin_addo()
    {
       if (IS_POST) {
            if (empty($_POST)) {
                $this->error('不能什么都不填哟!!');
                exit;
            }

            if (!$this->Auser->field('name,pwd,tel,email,sex')->create()) {
            //如果创建失败  表示验证没有通过 输出错误提示信息
                $this->error($this->Auser->getError());
            } else {
            //验证通过
                if ($this->Auser->add() > 0) {
                    $this->success('添加成功',U('Auser/index'));
                } else {
                    $this->error('添加失败');
                }
            }
            }else{
                $this->error('请求失败!!!');
        }
    }

    //修改用户页面
    public function edit()
    {   
        //查出数据
        $data = array('id'=>I('id'));
        // $id = $data['id'];
        $vo =$this->Auser->where($data)->find();
        // dump($vo);
        // exit;
        //向模板分配数据
        $this->assign('vo',$vo);
        //加载模板
        $this->assign('title','后台用户修改');
        $this->display('Auser/edit');
    }

    //执行用户修改操作
    public function editdo()
    {
        if (IS_POST) {

            // 初始化
            if(!$this->Auser->create()){
                $this->error($this->Auser->getError());
                exit;
            }

            if ($this->Auser->save() >=0) {
                $this->success('修改成功',U('Auser/index'));
            }else{
                $this->error('修改失败');
            }

            }else{
            $this->error('请求失败!!!');
        }
    }



    public function del()
    {
        if (IS_GET) {
        
            if ($this->Auser->delete(I('id')) > 0){
                $this->success('删除成功',U('Auser/index'));
            }else{
                $this->error('删除失败!!!');
            }


        }else{
            $this->error('请求失败!');
        }
    }

    //浏览 角色信息
    public function rolelist(){
        //查询节点信息
        $list = $this->Role->where('type=1')->select();
        // dump($list);
        // exit;
        //查询当前用户信息
        $users = $this->Auser->where(array('id'=>array('eq',I('id'))))->find();

        // dump($users);
        // exit;

        //获取当前用户的角色信息
        $rolelist = $this->User_role->where(array('u_id'=>array('eq',I('id'))))->select();

        $myrole = array(); //定义空数组
        //对用户的角色进行重组
        foreach($rolelist as $v){
            $myrole[] = $v['r_id'];
        }
            

        //分配数据
        $this->assign("list",$list);
        //分配当前用户信息
        $this->assign('users',$users);
        //分配该用户的角色信息
        $this->assign('role',$myrole);

        //加载模板
        $this->display('Auser/rolelist');
    }


    //保存用户角色
    public function saverole()
    {
            // I('role');
            // exit;
        //判读必须选择一个角色
        if(empty($_POST['role'])){
             $this->error("请选择一个角色！");
        }

        $uid = $_POST['user_id'];

        //清除用户所有的角色信息，避免重复添加
        $this->User_role->where(array('u_id'=>array('eq',$uid)))->delete();
    
        foreach(I('role') as $v){
            $data['u_id'] = $uid;
            $data['r_id'] = $v;
            //执行添加
            $this->User_role->data($data)->add();

            }

        $this->success("角色分配成功",U('Auser/index'));
            
    } 
        


    //查看用户所有用的权限
    public function see()
    {
        // dump($_GET);
        $id = $_GET['id'];
        $list = M('user_role')->where(array('u_id'=>$id))->select();
        // dump($list);
        // exit;
        foreach ($list as $v) {
            // echo $v['n_id'];
            // exit;
            $r_id .= "`id`="."'".$v['r_id']."'"." or ";
            $rid .= "`r_id`="."'".$v['r_id']."'"." or ";

        }
        $r_id = rtrim($r_id,'or ');
        $rid = rtrim($rid,'or ');

        $r_list = M('role')->where("$r_id")->select();
        // dump($r_list);
        // exit;
        $rname = $r_list[0]['rname'];
        $remark = $r_list[0]['remark'];
        

        $data = M('role_power')->where("$rid")->select();
        foreach ($data as $vi) {
            // echo $v['n_id'];
            // exit;
            $p_id .= "`id`="."'".$vi['p_id']."'"." or ";
            // $rid .= "`r_id`="."'".$v['r_id']."'"." or ";

        }
        $p_id = rtrim($p_id,'or ');

        $arr = M('power')->where("$p_id")->select();


        // dump($arr);
        // exit;
        // echo $r_id;
        $this->assign('p_list',$arr);
        $this->assign('rname',$rname);
        $this->assign('remark',$remark);
        
        $this->display();






    }






}